package internal

// StockSrvConfig Nacos 解析映射结构体
type StockSrvConfig struct {
	SrvName string   `mapstructure:"srvName" json:"srvName"`
	Host    string   `mapstructure:"host" json:"host"`
	Port    int      `mapstructure:"port" json:"port"`
	Tags    []string `mapstructure:"tags" json:"tags"`
}

// ProductSrvConfig  viper解析映射结构体
type ProductSrvConfig struct {
	SrvName string   `mapstructure:"srvName" json:"srvName"`
	Host    string   `mapstructure:"host" json:"host"`
	Port    int      `mapstructure:"port" json:"port"`
	Tags    []string `mapstructure:"tags" json:"tags"`
}

// ProductWebConfig  viper解析映射结构体
type ProductWebConfig struct {
	SrvName string   `mapstructure:"srvName" json:"srvName"`
	Host    string   `mapstructure:"host" json:"host"`
	Port    int      `mapstructure:"port" json:"port"`
	Tags    []string `mapstructure:"tags" json:"tags"`
}

// RedisConfig viper解析映射结构体
type RedisConfig struct {
	Host string `mapstructure:"host" json:"host"`
	Port int    `mapstructure:"port" json:"port"`
}

// ConsulConfig viper解析映射结构体
type ConsulConfig struct {
	Host string `mapstructure:"host" json:"host"`
	Port int    `mapstructure:"port" json:"port"`
}

type JWTConfig struct {
	SingingKey string `mapstructure:"signing_key"`
}

// NacosConfig nacos基础属性结构信息
type NacosConfig struct {
	Host      string `mapstructure:"host" json:"host"`
	Port      uint64 `mapstructure:"port" json:"port"`
	NameSpace string `mapstructure:"namespace" json:"nameSpace"`
	DataId    string `mapstructure:"dataid" json:"dataId"`
	Group     string `mapstructure:"group" json:"group"`
}

// DBConfig 数据库连接配置
type DBConfig struct {
	Host     string `json:"host" mapstructure:"host" `
	Port     int    `json:"port" mapstructure:"port" `
	DBName   string `json:"dbName" mapstructure:"dbName" `
	UserName string `json:"userName" mapstructure:"userName"`
	Password string `json:"password" mapstructure:"password" `
}

// CartOrderConfig 订单
type CartOrderConfig struct {
	SrvName string   `mapstructure:"srvName" json:"srvName"`
	Host    string   `mapstructure:"host" json:"host"`
	Port    int      `mapstructure:"port" json:"port"`
	Tags    []string `mapstructure:"tags" json:"tags"`
}

// CartWebConfig 购物车web
type CartWebConfig struct {
	SrvName string   `mapstructure:"srvName" json:"srvName"`
	Host    string   `mapstructure:"host" json:"host"`
	Port    int      `mapstructure:"port" json:"port"`
	Tags    []string `mapstructure:"tags" json:"tags"`
}

// AppConfig  程序应用统一参数映射入口
type AppConfig struct {
	DBConfig         DBConfig         `json:"db"`
	JWTConfig        JWTConfig        `json:"JWT"`
	RedisConfig      RedisConfig      `mapstructure:"redis" json:"redis"`
	ConsulConfig     ConsulConfig     `mapstructure:"consul" json:"consul"`
	ProductSrvConfig ProductSrvConfig `mapstructure:"product_srv" json:"product_srv"`
	CartOrderConfig  CartOrderConfig  `mapstructure:"cart_order_srv" json:"cart_order_srv"`
	CartWebConfig    CartWebConfig    `mapstructure:"cart_order_web" json:"cart_order_web"`
	StockSrvConfig   StockSrvConfig   `mapstructure:"stock_srv" json:"stock_srv"`
	ProductWebConfig ProductWebConfig `mapstructure:"product_web" json:"product_web"`
	//NacosConfig      NacosConfig      `mapstructure:"nacos" json:"nacos"`
}
